package com.YCH.model.mappers.app;


import com.YCH.model.article.dtos.ArticleHomeDto;
import com.YCH.model.article.pojos.TbArticle;
import com.YCH.model.article.vos.ApArticleList;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TbArticleMapper {
    /**
     * 获取文章详情内容
     * @param ArticleId
     * @return
     */
    TbArticle loadArticleContentInfo(Long ArticleId);

    /**
     * 通过ID查询文章 标题图片标志
     *
     * @param articleid
     * @return
     */
    TbArticle selectTitleAndImageAndFlagById(Long articleid);

    /**
     * 照用户地理位置，加载文章
     *
     * @param dto  参数封装对象
     * @param type 加载方向
     * @return
     */
    List<TbArticle> loadArticleListByLocation(@Param("dto") ArticleHomeDto dto, @Param("type") short type);

    /**
     * 依据文章IDS来获取文章详细内容
     *
     * @param list 文章ID
     * @return
     */
    List<TbArticle> loadArticleListByIdList(@Param("list") List<ApArticleList> list);

    /**
     * 根据文章id来获取单个文章
     * @param articleId
     * @return
     */
    TbArticle loadArticleById(@Param("articleId") Long articleId);
    /**
     * 依据文章IDS来获取文章详细内容
     * @param list 文章ID
     * @return
     */
    List<TbArticle> loadArticleListByIdListV2(List<Integer> list);

    /**
     * 有地址插入
     * @param apArticle
     * @return
     */
    Integer insertHasLocation(TbArticle apArticle);

    /**
     * 无地址插入
     * @param apArticle
     * @return
     */
    Integer insertNoLocation(TbArticle apArticle);

    /**
     * 根据用户id和最近插入时间排序拿到最近插入的id
     * @param userId
     * @return
     */
    Long selectIdByUserIdLimitOne(Long userId);

    Long updateFlagIdAndContentId(TbArticle tbArticle);

    List<Integer> findByAuthorId(Integer apAuthorId);

    /**
     * 抽取最近的文章数据用于计算热文章
     *
     * @param lastDate
     * @return
     */
    List<TbArticle> loadLastArticleForHot(String lastDate);

    /**
     * 查询
     *
     * @param apArticle
     * @return
     */
    List<TbArticle> selectList(TbArticle apArticle);

    /**
     * 更新
     * @param apArticle
     */
    void updateSyncStatus(TbArticle apArticle);

    /**
     * 获取当日发布的图文
     * @return
     */
    // List<ApArticleSDto> selectListForStatistic();

    /**
     * 获取当前登录用户的云记
     */
    List<TbArticle> loadArticleListByUserId(Long userId);

    List<TbArticle> loadArticleListByUserCollection(List<Long> list);
}